package be.ipl.pigolo.daoimpl;

import java.util.List;

import javax.ejb.Stateless;

import be.ipl.pigolo.dao.PartieDao;
import be.ipl.pigolo.domaine.Fermier;
import be.ipl.pigolo.domaine.Partie;

@SuppressWarnings("serial")
@Stateless
public class PartieDaoImpl extends DaoImpl<Integer, Partie> implements
		PartieDao {

	@Override
	public List<Partie> listerPartiesEnAttentes() {
		String query = "select p " + "from Partie p " + "where p.etat = '"
				+ Partie.Etat.EN_ATTENTE.name() + "'";
		return liste(query);
	}

	@Override
	public List<Partie> listerToutesParties() {
		String query = "select p " + "from Partie p ";
		return liste(query);
	}

	@Override
	public Partie rechercher(String nom) {
		String query = "SELECT p " + "FROM Partie p " + "WHERE p.nom = ?1";
		return recherche(query, nom);
	}

	@Override
	public boolean rechercherJoueurDansPartie(Fermier fermier) {
		String query = "SELECT p " + "FROM Partie_Fermier p "
				+ "WHERE p.id_fermier = ?1 "
				+ "AND (p.statut = ?2 OR p.statut = ?3)";
		return recherche(query, fermier.getId(),
				Fermier.STATUS_JEU.ENJEU.name(),
				Fermier.STATUS_JEU.OBSERVATEUR.name()) != null;
	}

	@Override
	public Partie creerPartie(Partie partie) {
		return super.enregistrer(partie);
	}

}